package com.edu.juc.lock.readWriteLock;

import java.util.concurrent.locks.StampedLock;

/**
 * StampedLock： 对 ReentrantLock 的优化
 * 邮戳锁，票据锁
 * stamp 戳记 long
 * StampedLock采取乐观获取锁后，其他线程尝试获取写锁时不会被阻塞，这其实是对读锁的优化，
 * 所以，在获取乐观读锁后，还需要对结果进行校验。
 * <p>
 * 三种控制读写的模式：
 * 1.读
 * 2.写
 * 3.乐观读
 * <p>
 * StampedLock不支持重入；
 * StampedLock的悲观读锁和乐观读锁都不支持条件变量(Condition).
 * 使用StampedLock一定不要调用中断操作，即不要调用interrupt()
 */
public class StampedLockTest {
    public static void main(String[] args) {
        StampedLock stampedLock = new StampedLock();
        long stamp = stampedLock.writeLock();
        try {
            System.out.println("写~");
        } finally {
            stampedLock.unlock(stamp);
        }

    }
}
